﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Runtime.Serialization;
using System.Globalization;

namespace SIMCObjetoNegocio
{  // PER_NATURALES que tienen el atributo TPPER='U'
    [DataContract]
    public partial class Usuario
    {

        public Usuario()
        {
            Rol = new Rol();
        }

        [DataMember]
        public Guid IdGuid { get; set; }
        [DataMember]
        public int Id { get; set; }
        [DataMember]
        public string Login { get; set; }
        [DataMember]
        public string Password { get; set; }

        public int _TipoUsuario { get; set; }
        [DataMember]
        public TipoUsuario TipoUsuario
        {
            get
            {
                if (_TipoUsuario == 1)
                    return SIMCObjetoNegocio.TipoUsuario.Interno;
                return SIMCObjetoNegocio.TipoUsuario.Externo;
            }
            set
            {
                if (value == SIMCObjetoNegocio.TipoUsuario.Interno)
                    _TipoUsuario = 1;
                else
                    _TipoUsuario = 2;
            }
        }// 1 Usuario Interno; 2 Usuario Externo 
        [DataMember]
        public string NombreCorto { get; set; } // Usado para mensajes internos al usuario
        [DataMember]
        public bool PuedeHacerLogin { get; set; }
        [DataMember]
        public bool EstaConectado { get; set; }
        [DataMember]
        public DateTime UltimoLogin { get; set; }
        [DataMember]
        public DateTime UltimoLogout { get; set; }
        [DataMember]
        public Rol Rol { get; set; }
        [DataMember(Name = "Permisos", IsRequired = false)]
        public IList<Permiso> Permisos { get; set; }
        [DataMember]
        public string NombreUsuario { get; set; }
        [DataMember]
        public string NombreCompleto
        {
            get;
            set;
        } // Usado para mensajes internos al usuario
        [DataMember]
        public string Telefono { get; set; }
        [DataMember]
        public DateTime TempPasswordDate { get; set; }
        [DataMember]
        public string Nombre { get; set; }
        [DataMember]
        public string Apellido { get; set; }
        //[DataMember]
        //public int UserId { get; set; }
        [DataMember]
        public string Email { get; set; }
        [DataMember]
        public bool IsApproved { get; set; }


        public string TipoUsuarioDescripcion
        {
            get
            {
                return this.TipoUsuario.ToString();
            }
            set 
            {
                TipoUsuarioDescripcion = value;
            }
        }
        public bool TieneClaveTemporal
        {
            get { return (this.TempPasswordDate != DateTime.MinValue); }
            set { TieneClaveTemporal = value; }
        }

    }
}
